package com.projles.ttd;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.projles.ttd.util.Jogador;
import com.projles.ttd.util.Player;

public class NovoJogadorActivity extends Activity implements OnClickListener{
	
	private Button btSalvar;
	private Button btAddOutro;
	
	private EditText campoJogador;
	private View layoutAnimar;
	
	private Player player;
	
	private List<Jogador> jogadores = new ArrayList<Jogador>();
	
    @SuppressWarnings("unchecked")
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.novo_jogador);
        
        layoutAnimar = findViewById(R.id.layout_novo_jogador);
        
        Bundle params = getIntent().getExtras();
    	jogadores = (ArrayList<Jogador>) params.get("jogadores");
        
        
        campoJogador = (EditText) findViewById(R.id.campo_novo_jogador);

        campoJogador.setOnKeyListener(new OnKeyListener() {
        	@Override
        	public boolean onKey(View v, int keyCode, KeyEvent event) {
                // O usuario apertar Enter no nosso EditText
                if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {

                	if (campoJogador.getText().length() == 0) {
                		return false;
                	}
                	
                	esconderTeclado();
                	return true;
                }
                return false;
        	}
    	});
        
        player = Player.getPlayer(this);
        btSalvar = (Button) findViewById(R.id.bt_salvar);
        btSalvar.setOnClickListener(this);
        
        btAddOutro = (Button) findViewById(R.id.bt_add_outro);
        btAddOutro.setOnClickListener(this);
        
    }
    
    @Override
    protected void onStart() {
    	super.onStart();
    	
    	animarEntradaView();
    	campoJogador.setText("");
    
    }
    
    
    @Override
    public void onClick(View v) {
    	
    	player.click();
    	
	    switch (v.getId()) {
	    
		case R.id.bt_salvar:
			addNovoJogador();
			finaliza();
			break;

		case R.id.bt_add_outro:
			addNovoJogador();
			onStart();
			break;
			
		}	
    }
    
    private void addNovoJogador() {
    	String nomeJog = campoJogador.getText().toString().trim();

		
		for (Jogador j: jogadores) {
			if (j.getNome().equals(nomeJog)) {
				toast(getResources().getString(R.string.erro_nomes_iguais));
				return;
			}
		}
		
    	if (nomeJog.trim().equals("") && jogadores.size() == 0) {
			toast(getResources().getString(R.string.erro_sem_jogadores));
			
		} else {
			
			if (!nomeJog.trim().equals("")) {
				jogadores.add(new Jogador(nomeJog.trim(), null));
			}
		}
	}

    private void finaliza() {
    	Intent i = this.getIntent();
    	i.putExtra("listaAtualizada", (Serializable) jogadores);
    	this.setResult(RESULT_OK, i);
    	
    	finish();
	}

	private void toast(String texto) {
    	Toast.makeText(this, texto, Toast.LENGTH_LONG).show();
    }
    
    private void esconderTeclado() {
		InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
		imm.hideSoftInputFromWindow(campoJogador.getWindowToken(), 0);
	}
    
    private void animarEntradaView() {
    	Animation in = AnimationUtils.makeInChildBottomAnimation(this);
    	layoutAnimar.startAnimation(in);
    	layoutAnimar.setVisibility(View.VISIBLE);
	}
}
